package com.demo.java.OD251_300.OD268;

import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【知识图谱新词挖掘】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146071168
 */
public class OdMain {
    public static int solveMethod(String content, String word) {
        // 如果content的长度小于word的长度，直接返回0
        if (content.length() < word.length()) {
            return 0;
        }

        int ans = 0;
        int total = word.length();  // 用于记录需要匹配的字符总数
        Map<Character, Integer> count = new HashMap<>();

        // 初始化count表，记录word中每个字符的频次
        for (char c : word.toCharArray()) {
            count.put(c, count.getOrDefault(c, 0) + 1);
        }

        // 初始化第一个滑动窗口
        for (int i = 0; i < word.length(); i++) {
            char c = content.charAt(i);
            if (count.containsKey(c)) {
                if (count.get(c) > 0) {
                    total--;
                }
                count.put(c, count.get(c) - 1);
            }
        }

        // 如果第一个窗口就匹配成功
        if (total == 0) {
            ans++;
        }

        // 滑动窗口，遍历content中的每个子串
        int max_i = content.length() - word.length();
        for (int i = 1; i <= max_i; i++) {
            char remove_c = content.charAt(i - 1);  // 窗口左侧移出的字符
            char add_c = content.charAt(i + word.length() - 1);  // 窗口右侧新进入的字符

            // 更新移除字符的计数
            if (count.containsKey(remove_c)) {
                if (count.get(remove_c) >= 0) {
                    total++;
                }
                count.put(remove_c, count.get(remove_c) + 1);
            }

            // 更新新增字符的计数
            if (count.containsKey(add_c)) {
                if (count.get(add_c) > 0) {
                    total--;
                }
                count.put(add_c, count.get(add_c) - 1);
            }

            // 如果窗口中的字符完全匹配word，增加计数
            if (total == 0) {
                ans++;
            }
        }
        return ans;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String content = scanner.nextLine().trim();
        String word = scanner.nextLine().trim();
        System.out.println(solveMethod(content, word));
    }
}